﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TankController.Dominio
{
    class EntradaDenteSerra : EntradaPeriodica
    {
        private int tempo;

        public EntradaDenteSerra(int periodo, double amplitudeMaxima, double anguloFase, double nivelDC)
        {
            this.periodo = periodo;
            this.amplitudeMaxima = amplitudeMaxima;
            this.anguloFase = anguloFase;
            this.nivelDC = nivelDC;
        }

        public override double GetValorAmplitude(int unidadeTempo)
        {
            double unidadeTempoPeriodica = unidadeTempo < periodo ? unidadeTempo : unidadeTempo % periodo;

            if (unidadeTempo == 0)
            {
                return 0;
            }
            else if (unidadeTempoPeriodica == 0)
            {
                return amplitudeMaxima;
            }
            else
            {
                return amplitudeMaxima * unidadeTempoPeriodica / 10;
            }
        }

        public override void GerarPontoSinal(int unidadeTempo, double valorAmplitude, ISinal sinal)
        {
            double valorAmplitudeReal = GetValorAmplitude(unidadeTempo);

            if (valorAmplitudeReal == amplitudeMaxima)
            {
                sinal.AdicionarPontoRetornaAZero(unidadeTempo, valorAmplitude);
            }
            else
            {
                sinal.AdicionarPonto(unidadeTempo, valorAmplitude);
            }
        }
    }
}
